﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using crm.model;
using System.Data;

namespace crm.aplicacao.CRMSystem
{
    public partial class GEstado : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                carregarPais();
                carregarEstado();
            }
        }

        [DirectMethod]
        public void inserir()
        {
            if (txtNomeEstado.Text == "" || cboPais.SelectedItem.Value == "" )
                X.Msg.Alert("Status", "Os campos deverão ser preenchidos!").Show();
            else{
                Estado obj = new Estado();
                obj.FkIdPais = Convert.ToInt32(cboPais.SelectedItem.Value);
                obj.Nome = txtNomeEstado.Text;

                EstadoDao objDao = new EstadoDao();

                var objValida = objDao.consultar(txtNomeEstado.Text);

                if (hdfIdEstado.Value.Equals(""))
                    if (objValida.Rows.Count > 0)
                        X.Msg.Alert("Status", "Este item já está cadastrado!").Show();
                    else
                        if (objDao.inserir(obj))
                            X.Msg.Alert("Status", "Inserido com sucesso!").Show();
                        else
                            X.Msg.Alert("Status", "Não foi possível inserir!").Show();
                else
                {
                    var id = Convert.ToInt32(hdfIdEstado.Value);
                
                    hdfIdEstado.Clear();
                
                    obj = new Estado() { IdEstado = id };

                    obj.FkIdPais = Convert.ToInt32(cboPais.SelectedItem.Value);
                    obj.Nome = txtNomeEstado.Text;

                    if (new EstadoDao().atualizar(obj))
                        X.Msg.Alert("Status", "Atualizado com sucesso!").Show();
                    else
                        X.Msg.Alert("Status", "Não foi possível atualizar!").Show();
                }
                WindowNovoEstado.Hide();
                carregarEstado();
            }
        }

        [DirectMethod]
        public void editar()
        {
            RowSelectionModel sm = GridEstados.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione um item").Show();
                return;
            }

            var id = Convert.ToInt32(sm.SelectedRow.RecordID);

            var dt = new EstadoDao().consultar(id);

            List<Estado> lst = new List<Estado>();

            foreach (DataRow dr in dt.Rows)
            {
                lst.Add(new Estado()
                {
                    IdEstado = (int)dr["idestado"],
                    Nome = (string)dr["nome"],
                    FkIdPais = (int)dr["fkidpais"]
                    
                });
            }

            if (lst.Count == 0)
                return;

            var obj = lst[0];

            hdfIdEstado.Value = id.ToString();
            cboPais.SelectedItem.Value = obj.FkIdPais.ToString();
            txtNomeEstado.Text = obj.Nome;

            WindowNovoEstado.Show();
        }

        [DirectMethod]
        public void remover()
        {
            RowSelectionModel sm = GridEstados.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione um item").Show();
                return;
            }

            var id = Convert.ToInt32(sm.SelectedRow.RecordID);

            new EstadoDao().remover(id);

            if(id > 0)
                X.Msg.Alert("Status", "Removido com sucesso!").Show();
            else
                X.Msg.Alert("Status", "Não foi possível remover!").Show();

            carregarEstado();

        }

        void carregarPais()
        {
            PaisDao objDao = new PaisDao();
            var dados = objDao.consultar();
            this.strPais.DataSource = dados;
            this.strPais.DataBind();
        }

        void carregarEstado()
        {
            EstadoDao objDao = new EstadoDao();
            var dados = objDao.consultar();
            this.strEstado.DataSource = dados;
            this.strEstado.DataBind();
        }

        [DirectMethod]
        public void limparCampo()
        {
            this.cboPais.Text = "";
            this.txtNomeEstado.Text = "";
        }
    }
}